A "generic type param" is place holder (it is not a real type).
Here is an example:
public interface List<E>
The Java "List" type has a generic element type.
When we use "List" we need to substitute in a
real type for the generic type "E".
Like this:
List<String> names;
Here we substitute in the
real type "String" for the generic type "E".
Therefore we have a list of String objects.
Another example:
List<Bike> names;
Here we substitute in the
real type "Bike" for the generic type "E".
Therefore we have a list of Bike objects.
More details here: